#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(int argc, char const *argv[])
{
    pid_t pid = fork();
    if( pid < 0 )
    {
        printf("创建进程失败");
    }
    if( pid > 0 )
    {
        int status;
        waitpid(pid, &status, 0);  // 等待子进程结束 0表示阻塞等待
        printf("父进程%d执行 , 子线程返回值：%d\n",getpid(), status);
    }else if( pid == 0 )
    {
        char *path = "/bin/ping";
        char *argv[] = {path ,"-c" , "5", "www.baidu.com"  , NULL};
        char *envp[] = {NULL};  // 环境变量 null表示使用默认环境变量
        int result = execve(path , argv , envp);
        printf("execve执行失败:%d\n",result);  // 目标程序正确执行，则不会执行到这里
    }

    printf("进程:%d执行结束\n",getpid());
    return 0;
}
